function Mexp = doehlert(k)

% Fonction génerant une matrice de doehlert pour k facteurs
%
% Mexp = doehlert(k)
%
% RC LESO-PB 8/12/95

% Calcul du nombre d'experience:
N = k*(k+1)+1;

% Preparation de la matrice Z
Z = diag(ones(k+1,1),0);
Z = Z - [ones(k+1,1),zeros(k+1,k)];
C=zeros((k+1)*k-k,k+1);
i=1;
for l=1:k+1
	s=1;
	for m=2:k+1
		ll=l+m-s;
		if (ll>(k+1))
			ll=2;
			s=l+m-2;			
		end	
		if (l~=ll)
			C(i,:) = Z(l,:) - Z(ll,:);
			i=i+1;
		end
	end
end	
Z=[Z;C];

% Preparation de la base orthogonale B
B=-diag(ones(k,1),-1);
for l=1:k
	for ll=l:k
		B(l,ll)=1/ll;
	end
end
B(:,k+1)=ones(k+1,1);

% Calcul de la matrice d'experience Mexp
X=Z*B;
for l=1:k
	X(:,l)=X(:,l)*sqrt(l/2/(l+1));
end
Mexp=X(:,1:k);
